package com.lp.guoguo.service;

import org.quartz.JobKey;
import org.quartz.SchedulerException;
import org.quartz.TriggerKey;

import java.util.Map;

/**
 * 定时任务服务接口
 */
public interface QuartzJobService {
    
    /**
     * 添加定时任务
     *
     * @param jobClassName  任务类名
     * @param jobName       任务名称
     * @param jobGroupName  任务组名称
     * @param cronExpression cron表达式
     * @param jobData       任务数据
     */
    void addJob(String jobClassName, String jobName, String jobGroupName, String cronExpression, Map<String, Object> jobData) throws Exception;
    
    /**
     * 暂停定时任务
     *
     * @param jobName      任务名称
     * @param jobGroupName 任务组名称
     */
    void pauseJob(String jobName, String jobGroupName) throws SchedulerException;
    
    /**
     * 恢复定时任务
     *
     * @param jobName      任务名称
     * @param jobGroupName 任务组名称
     */
    void resumeJob(String jobName, String jobGroupName) throws SchedulerException;
    
    /**
     * 修改定时任务的cron表达式
     *
     * @param jobName        任务名称
     * @param jobGroupName   任务组名称
     * @param cronExpression cron表达式
     */
    void updateJobCron(String jobName, String jobGroupName, String cronExpression) throws SchedulerException;
    
    /**
     * 删除定时任务
     *
     * @param jobName      任务名称
     * @param jobGroupName 任务组名称
     */
    void deleteJob(String jobName, String jobGroupName) throws SchedulerException;
    
    /**
     * 立即执行一次任务
     *
     * @param jobName      任务名称
     * @param jobGroupName 任务组名称
     */
    void runJobNow(String jobName, String jobGroupName) throws SchedulerException;
    
    /**
     * 判断任务是否存在
     *
     * @param jobName      任务名称
     * @param jobGroupName 任务组名称
     * @return 是否存在
     */
    boolean checkJobExists(String jobName, String jobGroupName) throws SchedulerException;
} 